package com.luocc.ccdemo.common

import android.app.Application
import android.util.Log
import com.luocc.ccdemo.interceptor.AddCookieInterceptor
import com.luocc.ccdemo.interceptor.LogInterceptor
import com.luocc.ccdemo.interceptor.SaveCookieInterceptor
import com.luocc.ccdemo.utils.OkHttpUtil
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator
import com.nostra13.universalimageloader.core.ImageLoader
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration
import com.nostra13.universalimageloader.core.assist.QueueProcessingType
import okhttp3.Interceptor

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        Log.d("LC_MyApplication", "onCreate")
        val config = ImageLoaderConfiguration.Builder(this)
            .threadPriority(Thread.NORM_PRIORITY - 2)// 线程优先级
            .denyCacheImageMultipleSizesInMemory()// 当同一个Uri获取不同大小的图片，缓存到内存时，只缓存一个。默认会缓存多个不同的大小的相同图片
            .tasksProcessingOrder(QueueProcessingType.LIFO)// 设置图片下载和显示的工作队列排序
            .diskCacheFileNameGenerator(Md5FileNameGenerator())// 将保存的时候的URI名称用MD5
            .writeDebugLogs()// 打印debug log
            .build()
        ImageLoader.getInstance().init(config)
        OkHttpUtil.init(prepareInterceptor())
    }

    private fun prepareInterceptor(): List<Interceptor> {
        val interceptors = ArrayList<Interceptor>()
        val logInterceptor = LogInterceptor()
        val saveCookieInterceptor = SaveCookieInterceptor(this)
        val addCookieInterceptor = AddCookieInterceptor(this)
        interceptors.add(addCookieInterceptor)
        interceptors.add(saveCookieInterceptor)
        interceptors.add(logInterceptor)
        return interceptors
    }
}

